3b2c2c227fd2d328bd089d025ebe9c6758a0afec,plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/LoopConditionNotUpdatedInsideLoopInspection.java,LoopConditionNotUpdatedInsideLoopVisitor,checkCondition,#PsiExpression#PsiStatement#,74

Before Change


                final PsiInstanceOfExpression instanceOfExpression =
                        (PsiInstanceOfExpression)condition;
                final PsiExpression operand = instanceOfExpression.getOperand();
                checkCondition(operand, context);
            } else if (condition instanceof PsiBinaryExpression) {
                final PsiBinaryExpression binaryExpression =
                        (PsiBinaryExpression)condition;
                PsiExpression lhs = binaryExpression.getLOperand();
                PsiExpression rhs = binaryExpression.getROperand();
                if (rhs == null) {
                    return;
                }
                lhs = ParenthesesUtils.stripParentheses(lhs);
                rhs = ParenthesesUtils.stripParentheses(rhs);
                if (ComparisonUtils.isComparison(binaryExpression)) {
                    if (lhs instanceof PsiLiteralExpression) {
                        checkCondition(rhs, context);
                    } else if (rhs instanceof PsiLiteralExpression) {
                        checkCondition(lhs, context);
                    }
                }
            } else if (condition instanceof PsiReferenceExpression) {

After Change


                final PsiInstanceOfExpression instanceOfExpression =
                        (PsiInstanceOfExpression)condition;
                final PsiExpression operand = instanceOfExpression.getOperand();
                if (checkCondition(operand, context)) {
                    registerError(operand);
                }
                return false;
            } else if (condition instanceof PsiBinaryExpression) {
                final PsiBinaryExpression binaryExpression =
                        (PsiBinaryExpression)condition;
                PsiExpression lhs = binaryExpression.getLOperand();
                PsiExpression rhs = binaryExpression.getROperand();
                if (rhs == null) {
                    return false;
                }
                lhs = ParenthesesUtils.stripParentheses(lhs);
                rhs = ParenthesesUtils.stripParentheses(rhs);
                if (ComparisonUtils.isComparison(binaryExpression)) {
                    if (PsiUtil.isConstantExpression(lhs)) {
                        if (checkCondition(rhs, context)) {
                            registerError(rhs);
                        }
                        return false;
                    } else if (PsiUtil.isConstantExpression(rhs)) {
                        if (checkCondition(lhs, context)) {
                            registerError(lhs);
                        }
                        return false;
                    } else if (lhs instanceof PsiReferenceExpression &&
                            rhs instanceof PsiReferenceExpression){
                        if (checkCondition(lhs, context) &&
                                checkCondition(rhs, context)) {
                            registerError(lhs);
                            registerError(rhs);
                        }